<?php
declare (strict_types = 1);

namespace app\admin\model;
use think\facade\Cache;
class AccessModel extends Base
{
    protected $name="access";
    /**
     * 获取权限列表
     */
    public static function getAccess(){
    	if(cache('Access')){
    		return cache('Access');
    	}
    	return self::setAccess();
    }
    /**
     * 设置权限列表权限
     */
    public static function setAccess(){
    	$Access=self::select();
    	cache('Access',$Access);
    	return $Access;
    }

    /**
     * 获取菜单树状结构
     */
    public static function getAccessTree(){
    	if(cache('AccessTree')){
    		return cache('AccessTree');
    	}
    	return self::setAccessTree();
    }

    /**
     * 设置菜单树状缓存
     */
    public static function setAccessTree(){
    	$Access=self::getAccess();
    	$AccessTree=tree($Access);
    	cache('AccessTree',$AccessTree);
    	return $AccessTree;
    }

    /**
     * 获取下拉选择列表
     */
    public static function getAccessSelect(){
    	if(cache('AccessSelect')){
    		return cache('AccessSelect');
    	}
    	return self::setAccessSelect();
    }

    /**
     * 设置下拉选择列表
     */
    public static function setAccessSelect(){
    	$Access=self::getAccess();
    	$AccessSelect=selectAccess($Access);
    	cache('AccessSelect',$AccessSelect);
    	return $AccessSelect;
    }

    /**
     * 重新设置当前模型缓存
     * 可以考虑放到异步任务中
     * @return bool
     */
    public static function setAll(){
    	try {
    		self::setAccess();
	    	self::setAccessTree();
	    	self::setAccessSelect();
	    	return true;
    	} catch (\Exception $e) {
    		return false;
    	}
    }

    /**
     * 设置插入后动作
     */
    public static function onAfterInsert(){
        //清除缓存
        Cache::clear();
    	//return self::setAll();
    }

    /**
     * 设置更新后动作
     */
    public static function onAfterUpdate(){
        Cache::clear();
    	//return self::setAll();
    }
    /**
     * 设置删除后动作
     */
    public static function onAfterDel(){
        Cache::clear();
    	//return self::setAll();
    }
}
